package com.dudu.service;

import java.util.List;

import com.dudu.bean.ChargingRuleBean;
import com.dudu.bean.ParamBean;
import com.dudu.bean.PoolAbilityInfoBean;
import com.dudu.bean.PoolNumberBean;
import com.dudu.bean.ZTreeBean;

/**
 * 号码池管理 
 * @author gaoxs
 *
 */
public interface IPoolNumberService {
	/**
     * 查询所有省份的名称
     * @return
     */
	public List<ParamBean> queryAllAreas();
	/**
	 * 查询号码池列表分页
	 * @param pageSql
	 * @param paramSql
	 * @return
	 */
	public List<PoolNumberBean> queryAll(String pageSql,String paramSql);
	/**
	 * 查询号码池总数
	 * @param paramSql
	 * @return
	 */
	public int getTotalNumber(String paramSql);
	/**
	 * 新增号码池数据
	 * @param bean
	 * @return
	 */
	public int doInsert(PoolNumberBean bean);
	/**
	 * 修改号码池数据
	 * @param bean
	 * @return
	 */
	public int doEdit(PoolNumberBean bean);
	/**
	 * 根据能力类型，查询所有已配置能力的号码list 分页
	 * @param pageSql
	 * @param paramSql
	 * @param accountId 获取账号id
	 * @param abilityType  获取能力类型
	 * @return
	 */
	public List<PoolNumberBean> queryNumbersByAbility(String pageSql,String paramSql,String accountId,String abilityType);
	/**
	 * 根据能力类型，查询所有已配置能力的号码总数
	 * @param paramSql
	 * @param accountId
	 * @param abilityType
	 * @return
	 */
	public int getTotalNumberByAbility(String paramSql, String accountId, String abilityType);
	/**
	 * 根据能力类型，查询所有未配置能力的号码总数
	 * @param paramSql
	 * @param abilityType
	 * @param app_key
	 * @param cust_account
	 * @return
	 */
	public int getTotalUnConfNum( String paramSql, String abilityType,String app_key,String cust_account);
	/**
	 * 根据能力类型，查询所有未配置能力的号码 list 分页
	 * @param pageSql
	 * @param paramSql
	 * @param abilityType
	 * @param app_key
	 * @param cust_account
	 * @return
	 */
	public List<PoolNumberBean> queryUnConfNumByAbility(String pageSql,String paramSql,String abilityType,String app_key,String cust_account);
	/**
	 * 根据号码池中号码的id，获取该号码已配置的号码能力关系
	 * @param poolId
	 * @return
	 */
	public List<PoolAbilityInfoBean> getRelByPoolId(String poolId);
	/**
	 * 插入能力号码配置关系信息
	 * @param tmpPoolAbility
	 * @return
	 */
	public int doInsertPoolAbility(PoolAbilityInfoBean tmpPoolAbility);
	/**
	 * 编辑能力号码配置关系信息
	 * @param tmpPoolAbility
	 * @return
	 */
	public int doEditPoolAbility(PoolAbilityInfoBean tmpPoolAbility);
	
	 /**
	 * 如果这两个dao方法获取的id对应相等，则在前台设置无法选择，其余则设置可以选择；
	 * 将这个能否选择的判断信息，放入comment_info中，然后在前台进行判断，设置html
	 * @param app_key 应用标识
	 * @param cust_account 账号标识
	 * @param abilityType 能力类型
	 * @return
	 */
    public List<PoolAbilityInfoBean> manageAbiByAccId(String app_key,String cust_account ,String abilityType);
    /**
	 * 根据号码池中号码的id，获取该号码已配置的号码能力关系
	 * @param pool_ability_id
	 * @return
	 */
    public PoolAbilityInfoBean getPoolAbilityNumberById(String pool_ability_id);
    /**
     * 查询默认显号
     * @param dao
     * @param ability_type  能力
     * @param number_source 来源（号码来源：通道提供：external，用户提供：custom，内部号码：inside）
     * @return
     */
    public PoolAbilityInfoBean queryDefaultPoolAbilityNumber(String ability_type, String number_source);
    /**
     * 根据ID查询相应信息
     * @param pool_id
     * @return
     */
    public PoolNumberBean queryPoolNumberById(String pool_id);
}
